/*
 * 文件名：RoleInfoTransactionImp.java
 * 版权：Copyright by www.wootide.com
 * 描述：
 * 修改人：ozm
 * 修改时间：2013-1-30
 * 跟踪单号：
 * 修改单号：
 * 修改内容：
 */
package com.wootide.ets.sys.role.transaction.imp;

import org.springframework.beans.BeanUtils;

import com.wootide.ets.common.ETSRuntimeException;
import com.wootide.ets.common.ErrorCodes;
import com.wootide.ets.common.Page;
import com.wootide.ets.common.QueryCondition;
import com.wootide.ets.common.QueryResults;
import com.wootide.ets.common.dao.CommonDao;
import com.wootide.ets.log.syslog.RunLog;
import com.wootide.ets.sys.role.dao.RoleInfoDao;
import com.wootide.ets.sys.role.pojo.RoleInfo;
import com.wootide.ets.sys.role.transaction.RoleInfoTransaction;

/**
 * 用户事务实现层
 * 〈功能详细描述〉
 * @author ozm
 * @version 2013-1-30
 * @see RoleInfoTransactionImp
 * @since 2013-1-30上午9:44:19
 */
public class RoleInfoTransactionImp implements RoleInfoTransaction
{
    /**
     * 注入运行日志
     */
    private RunLog runLog;
    
    /**
     * 公共数据访问层实例
     */
    private CommonDao commonDao;
    
    /**
     * 角色数据访问层实例
     */
    private RoleInfoDao roleInfoDao;
    
    /**
     * 
     * Description: 分页查询
     * Implement: <br>
     * @param page 分页参数
     * @param queryCondition 查询条件
     * @see
     * @return Result 结果对象
     * @author ozm2013-1-29下午1:23:32
     */
    public QueryResults queryForPages(Page page, QueryCondition queryCondition)
    {
        
        // 打印方法入口参数
        runLog.debug("page=" + page);
        runLog.debug("queryConditon=" + queryCondition);
        QueryResults queryResults = commonDao.queryForPages(page, queryCondition);
        return queryResults;
    }
    
    public QueryResults viewAllRoles()
    {
        QueryResults queryResults = new QueryResults();
        queryResults.setResults(roleInfoDao.findAllRoles());
        return queryResults;
    }
    
    /**
     * 
     * Description: 添加一个角色
     * Implement: <br>
     * @param roleInfo 要添加的角色
     * @see
     * @author ozm2013-1-29下午1:26:06
     */
    public void addOneRole(RoleInfo roleInfo)
    {
        // 打印方法入口参数
        runLog.debug("roleInfo=" + roleInfo);
        // 根据用户名检查唯一性
        Integer num = roleInfoDao.findNumByRoleName(roleInfo.getRoleName());
        //用户记录已经存在
        if (num > 0)
        {
            throw new ETSRuntimeException("Role Existed!",
                    ErrorCodes.Sys.Role.ROLEEXIST);
        }
        
        commonDao.addOneObject(roleInfo);
        
    }
    
    /**
     * 
     * Description: 修改一个角色信息
     * Implement: <br>
     * @param roleInfo 要修点的角色信息
     * @see
     * @return RoleInfo 修改的角色对象
     * @author ozm2013-1-29下午1:27:37
     */
    public RoleInfo modOneRole(RoleInfo roleInfo)
    {
        // 打印方法入口参数
        runLog.debug("roleInfo=" + roleInfo);
        RoleInfo oldRoleInfo = roleInfoDao.findOneRoleByRoleId(roleInfo.getRoleId());
        
        //判断要修改的记录是否存在
        if (null == oldRoleInfo)
        {
            throw new ETSRuntimeException("Role not Exist!",
                    ErrorCodes.Sys.Role.ROLENOTEXIST);
        }
        
        //获取原始数据副本
        RoleInfo oldRoleInfoCopy = new RoleInfo();
        BeanUtils.copyProperties(oldRoleInfo, oldRoleInfoCopy);
        
        //修改用户信息
        oldRoleInfo.setRoleAuthoritiesInfos(roleInfo.getRoleAuthoritiesInfos());
        oldRoleInfo.setRoleDesc(roleInfo.getRoleDesc());
       
        return oldRoleInfoCopy;
    }
    
    /**
     * 
     * Description: 删除用户
     * Implement: <br>
     * @param innerIndex 要删除的用户id
     * @return
     * @see
     * @return UserInfo 要删除的用户信息
     * @author ozm2013-1-29下午4:17:56
     */
    public RoleInfo delOneRole(Integer innerIndex)
    {
        RoleInfo oldRoleInfo = roleInfoDao.findOneRoleByRoleId(innerIndex);
        //判断要删除的记录是否存在
        if (null == oldRoleInfo)
        {
            throw new ETSRuntimeException("Role not Exist!",
                    ErrorCodes.Sys.Role.ROLENOTEXIST);
        }
        
        commonDao.delOneObject(oldRoleInfo);
        //        BeanUtils.copyProperties(oldUserInfo, oldUserInfoCopy);
        return oldRoleInfo;
    }
    
    /**
     * 
     * Description: 通过索引获取角色对象
     * Implement: <br>
     * @param innerIndex 指定的角色roleId 
     * @see
     * @return RoleInfo 要查询的角色信息
     * @author ozm2013-1-29下午3:55:17
     */
    public RoleInfo viewOneRole(Integer innerIndex)
    {
        // 打印方法入口参数
        runLog.debug("innerIndex=" + innerIndex);
        RoleInfo roleInfo = roleInfoDao.findOneRoleByRoleId(innerIndex);
        return roleInfo;
    }

    public void setRunLog(RunLog runLog)
    {
        this.runLog = runLog;
    }

    public void setCommonDao(CommonDao commonDao)
    {
        this.commonDao = commonDao;
    }

    public void setRoleInfoDao(RoleInfoDao roleInfoDao)
    {
        this.roleInfoDao = roleInfoDao;
    }
}
